package org.jeecg.modules.simulator.model.train.action;


import java.time.LocalTime;
import java.util.Map;

public interface TrainActionRecorders {
    /**
     * @description:id,就是列车id+车次号
     *
     * @author: renzhg
     * @date: 2024/7/29 9:22
     **/
    public String getRocordersId();
    public void setRocordersId(String recordersId);


    public void setLineId(String lineId);
    public String getLineId();


    public boolean isUp();
    public void setUp(boolean up);
    /**
     * @description: 动作记录类型，
     * simple:指只有发车站点，车辆发车按匀速运行在轨道上，这个设置应该在PlanTableManager中设置
     * normal：指给定一个完整正常列车时刻表的动作记录，这个设置是在列车初始化时候设置
     *
     * @author:  renzhg
     * @date:  2024/9/19 9:52
     **/
    public String getTrainActionRecordersType();
    public void setTrainActionRecordersType(String trainActionRecordersType);



    /**
     * @description: 动作记录，key是动作执行顺序，value是动作记录
     *
     * @author: renzhg
     * @date: 2024/7/29 9:30
     **/
    public Map<Integer, TrainActionRecorder> getTrainActionRecordMap();
    public void setTrainActionRecordMap(Map<Integer, TrainActionRecorder> trainActionRecordMap);






    public  TrainActionRecorder getCurrentTrainActionRecorder( );

    public void setCurrentTrainActionRecorder(TrainActionRecorder trainActionRecorder);

    public Boolean moveNext();

    public TrainActionRecorder getFristTrainActionRecorder();

    public TrainActionRecorder getSecondTrainActionRecorder();
    public TrainActionRecorder getLastTrainActionRecorder();





    public TrainActionRecorder  getNextTrainActionRecorder();
    /**
     * @description: 获取第一个动作执行的时间
     * @author: renzhg
     * @date: 2024/8/8 10:59
     * @param:
     * @return:
     * @return: java.lang.String
     **/
    public LocalTime getFistActionTime();
    public void setFistActionTime(LocalTime firstTime);
    public LocalTime getEndActionTime();

    public  String getLastTrainActionRecorderName();

//    /**
//     * @description: 是否开始执行
//     *
//     * @author: renzhg
//     * @date: 2024/8/5 11:01
//     **/
//    public boolean isStartExecute();
//    public  void setStartExecute(boolean startExecute);


    /**
     * @description: 添加动作接口，可能用不上
     *
     * @author: renzhg
     * @date: 2024/7/29 9:33
     **/
    public void addTrainActionRecord(TrainActionRecorder trainActionRecorder);

    /**
     * @description: 动作链条状态，没开始，开始，结束
     *
     * @author: renzhg
     * @date: 2024/7/29 9:40
     **/
    public ActionRecordersStatus getStatus();
    public void setStatus(ActionRecordersStatus status);

    /**
     * @description: 获取下一个动作
     *
     * @author: renzhg
     * @date: 2024/7/29 9:41
     **/
    public  TrainActionRecorder getNextAction();
}
